import { postAxiosRequest } from "@/services/common";

export async function columnsFilter(columns) {
  const res = await postAxiosRequest(
    "/system/sysMenuColumn/getListAccessColumnData"
  );
  if (res.statusCode === 200) {
    return columns.filter((column) => {
      // 排除序号和操作
      if (column.key === "serial" || column.dataIndex === "action") {
        return column;
      }
      // 如果不存在PermissionCode属性，直接返回
      if (
        !("PermissionCode" in column) ||
        column.PermissionCode === undefined ||
        column.PermissionCode === ""
      ) {
        return column;
      }
      return res.data.some((item) => item.columnCode === column.PermissionCode);
    });
  }
  return [];
}

/**
 * 使用方法
 * （自建页面）
 * 1.当前菜单中添加表头编码，然后去岗位角色权限页面授权;
 * 2.在对应页面引入 import { columnsFilter } from "@/utils/columnsFilter";
 * 3.在页面当中的columns：[]数组中对应的表头添加 PermissionCode: "xxx", xxx为设置的唯一编码;
 * 4.在生命周期mounted中调用columnsFilter
 * async mounted() {
 *   this.columns = await columnsFilter(this.columns)；
 * },
 * （拖拽生成页面）
 * 1.最后一步列表设计中左侧字段添加表头权限编码；
 * 2.在菜单中添加同名表头权限编码，然后去岗位角色权限页面授权；
 */
